<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!-- import CSS -->
    <link rel="stylesheet" href="../css/eui.css">
    <!-- import JavaScript -->
    <script type="text/javascript" src="../js/vue.js"></script>
    <script src="../js/eui.js"></script>
    <script src="../js/axios.min.js"></script>
    <script src="../js/dayjs.min.js"></script>
</head>
<body>
<!--
需求1：定义一个v-big指令，和v-text类似，但会把绑定的数值放大10倍。
需求2：定义一个v-fbind指令，和v-bind类似，但可以让其所绑定的input元素默认获取焦点。
-->
<div id="root">
    <div>
        <h2>当前的n值是：<span v-text="n"></span></h2>
        <h2>放大10倍后的n值是：<span v-big="n"></span></h2>
        <h2>放大10倍后的n值是：<span v-small-number="n"></span></h2>
        <button @click="n++">点我n+1</button>
        <hr>
        <input type="text" v-fbind:value="n">
    </div>
</div>
</body>
<script type="text/javascript">
    /*
    自定义指令总结
    一、定义语法
        （1）局部指令：
            a、函数式
                directives(element,binding){}
            b、对象式
                directives{
                    bind(){}
                    inserted(){}
                    update(){}
                    对象名（）{}。。。。。。}
        （2）全局式
            Vue.directive(指令名，配置对象/回调函数)
    二、配置对象中常用的3个回调
        （1）bind:指令与元素成功绑定时调用
        （2）inserted：指令所在元素被插入页面时调用
        （3）update：指令所在模板结构被重新解析时调用
    三、备注
        1.指令定义时不加v-，但使用时要加v-。
        2.指令名如果是多个单词，要是用kebab-case（短横杠）命名方式，不要用小驼峰命名方式
    */
    let vm = new Vue({
        el:'#root',
        data:{
            n:1,
        },
        //自定义的指令中的this均指向window
        directives:{
            //big函数何时会被调用？1.指令与元素成功绑定时（一上来） 2.指令所在的模板被重新解析时
            big(element,binding){
                element.innerText = binding.value * 10 ;
            },
            'small-number'(element,binding){
                element.innerText = binding.value * 10 ;
            },
            fbind:{
                //bind:指令与元素成功绑定时（一上来）
                bind(element,binding){
                    element.value = binding.value;
                },
                //inserted：指令所在元素被插入页面时
                inserted(element,binding){
                    element.focus();
                },
                //update：指令所在的模板被重新解析时
                update(element,binding){
                    element.value = binding.value;
                    element.focus();
                }
            }
        }
    })
    /*
            定义全局指令
            Vue.directive('fbind',{
                /bind:指令与元素成功绑定时（一上来）
                bind(element,binding){
                    element.value = binding.value;
                },
                //inserted：指令所在元素被插入页面时
                inserted(element,binding){
                    element.focus();
                },
                //update：指令所在的模板被重新解析时
                update(element,binding){
                    element.value = binding.value;
                    element.focus();})
     */
</script>
</html>